From a226d0f1bb969dc746205733837087442d3238b1 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 3 Mar 2008 11:08:10 +0000 Subject: [PATCH] blktapctrl: Fix a potential device minor number leak. Signed-off-by: Kouya Shimura --- tools/blktap/drivers/blktapctrl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c index abdb886e57..8cbf185f03 100644 --- a/tools/blktap/drivers/blktapctrl.c +++ b/tools/blktap/drivers/blktapctrl.c @@ -518,7 +518,7 @@ int blktapctrl_new_blkif(blkif_t *blkif) if (test_path(blk->params, &ptr, &type, &exist) != 0) { DPRINTF("Error in blktap device string(%s).\n", blk->params); - return -1; + goto fail; } blkif->drivertype = type; blkif->cookie = next_cookie++; @@ -527,11 +527,11 @@ int blktapctrl_new_blkif(blkif_t *blkif) DPRINTF("Process does not exist:\n"); if (asprintf(&rdctldev, "%s/tapctrlread%d", BLKTAP_CTRL_DIR, minor) == -1) - return -1; + goto fail; if (asprintf(&wrctldev, "%s/tapctrlwrite%d", BLKTAP_CTRL_DIR, minor) == -1) { free(rdctldev); - return -1; + goto fail; } blkif->fds[READ] = open_ctrl_socket(rdctldev); blkif->fds[WRITE] = open_ctrl_socket(wrctldev); @@ -543,7 +543,7 @@ int blktapctrl_new_blkif(blkif_t *blkif) DPRINTF("Launching process, CMDLINE [tapdisk %s %s]\n",wrctldev, rdctldev); if (launch_tapdisk(wrctldev, rdctldev) == -1) { DPRINTF("Unable to fork, cmdline: [tapdisk %s %s]\n",wrctldev, rdctldev); - return -1; + goto fail; } free(rdctldev); -- 2.30.2